import { _decorator, resources, Sprite, SpriteFrame } from "cc";  
  
const { ccclass, property } = _decorator;  
  
export class StaticResources {  
    //用于存放emoji图片
    static emojis: SpriteFrame[] | null = null;  
  
    public static async getAllEmoji(): Promise<SpriteFrame[]> 
    {  
        if (!this.emojis) 
        {  
            this.emojis = []; // 初始化数组，避免在回调函数中使用 null  
            //封装promise
            await new Promise((resolve, reject) => {  
                //加载资源
                resources.loadDir('emoji', SpriteFrame, (error, assets) => {  
                    if (error) 
                    {  
                        reject(error);  
                    } 
                    else 
                    {  
                        this.emojis = assets as SpriteFrame[]; // 确保类型是 SpriteFrame[]  
                        //对emoji图片按照名称进行排序
                        this.sortArrayByName(this.emojis)
                        resolve(this.emojis);  
                    }  
                });  
            });  
        }
        return this.emojis;  
    }  
    //对emoji图片资源按照名称进行排序
    private static sortArrayByName(arr:SpriteFrame[])
    {
        return arr.sort((a, b) => {  
            // 使用Number()函数或parseInt()将字符串转换为数字  
            const numA = parseInt(a.name, 10); // 将a.name转换为整数  
            const numB = parseInt(b.name, 10); // 将b.name转换为整数  
      
            // 使用数值进行比较  
            if (numA < numB) 
            {  
                return -1; // 如果a.name转换后小于b.name转换后，则a应该在b前面  
            }  
            if (numA > numB) 
            {  
                return 1; // 如果a.name转换后大于b.name转换后，则a应该在b后面  
            }  
            return 0; // 如果两者相等，则它们的顺序不变  
        });  
    }
}